package do

import (
	"fmt"
	"time"

	"gorm.io/gorm"
)

// 厂家返点

type FactoryRebate struct {
	ID int `gorm:"primarykey"`

	// 关联的商品ID
	GoodsID int `gorm:"column:goods_id;NOT NULL;uniqueIndex:goods_id"`
	// 关联的商品信息
	// Goods *Goods `gorm:"-"`

	// 返点百分比, 实际表示为[0.0, 1.0]之间的数
	Rebate float32 `gorm:"column:rebate;NOT NULL"`
	// 有效期，格式为"2025-08"表示25年第8个月内有效，不设置则为长期有效
	ValidityStartTime  string `gorm:"column:validity_start_time;type:varchar(32)"`
	ValidityEndTime string `gorm:"column:validity_end_time;type:varchar(32)"`

	CreatedAt time.Time `gorm:"autoCreateTime;type:datetime(0)"`
	UpdatedAt time.Time `gorm:"autoUpdateTime;type:datetime(0)"`
}

func (s *FactoryRebate) BeforeSave(tx *gorm.DB) (err error) {
	if s.GoodsID <= 0 {
		return fmt.Errorf("商品ID非法")
	}
	if s.Rebate < 0 || s.Rebate > 1 {
		return fmt.Errorf("返点百分比必须在0-100之间")
	}
	return nil
}

func (FactoryRebate) TableName() string {
	return "factory_rebate"
}
